Skip to content

Swiping!#116

Open
clementroze wants to merge 6 commits intomainfrom
clement-swipiing-v1-proto
Open

Swiping!#116
clementroze wants to merge 6 commits intomainfrom
clement-swipiing-v1-proto

Conversation

@clementroze
Copy link
Copy Markdown
Collaborator

@clementroze clementroze commented Mar 11, 2026

Changes:

  • Replaced “Matches” tab with “Home” and updated icons.
  • Added FilledHomeIcon component.
  • Updated _layout.tsx and index.tsx for tab navigation.
  • Added mock and UI card data for daily feed (CardContent, CardSheetContent, CardStack, cardTypes, mockCards).

Features

  • Daily feed cards: profile actions, preferences, mock matches, weekly prompts, tutorials.
  • Animated cards
  • DEBUG Reset tour button (to be removed, but just to simualte the tutorial)
  • Filters for choosing what kind of cards to show in the stack

Details

Swiping a card

Screen.Recording.2026-04-08.at.1.45.47.AM.mov

Opening a sheet from the card

Screen.Recording.2026-04-08.at.1.46.02.AM.mov

Done state

Screen.Recording.2026-04-08.at.1.46.23.AM.mov

Tour/tutorial

Screen.Recording.2026-04-08.at.1.46.45.AM.mov

FIlter menu

Screen.Recording.2026-04-08.at.1.48.41.AM.mov

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 11, 2026

Deploy Preview for redi-love ready!

Name Link
🔨 Latest commit 3beb20e
🔍 Latest deploy log https://app.netlify.com/projects/redi-love/deploys/69d5f2c5c68c870008b67b75
😎 Deploy Preview https://deploy-preview-116--redi-love.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@clementroze clementroze marked this pull request as draft March 11, 2026 01:15
@clementroze clementroze requested a review from abrar-amin April 8, 2026 04:30
@clementroze clementroze marked this pull request as ready for review April 8, 2026 04:30
@clementroze clementroze requested a review from glopes2023 April 8, 2026 05:49
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 8, 2026

Copy link
Copy Markdown
Collaborator Author

@clementroze clementroze left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello! note to my reviewers - lots of this was Claude-generated since im just a lil designer dabbling in frontend, but its the result of me carefully prompting my pet LLM and feeding it enough information for it to achieve the vision i had (trust trust guys)

Comment on lines +60 to +61
const TUTORIAL_CARDS: TutorialCard[] = [
{
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are the first yellow tutorial cards that a user sees to learn how the system works

it includes the 3 core actions: swiping to dismiss, tapping the card to open the sheet, and opening the filters menu

Comment on lines +156 to +160
useEffect(() => {
AsyncStorage.getItem(TOUR_STORAGE_KEY).then((val: string | null) => {
setTourSeen(val === 'true');
});
}, []);
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tour should only show once

Comment on lines +379 to +384
<AppText
variant="bodySmall"
style={{ color: AppColors.foregroundDimmer }}
>
RESET TOUR
</AppText>
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Temporary button just for debugging tour

Comment on lines -377 to -383
return (
<View
key={`${matchProfile.netid}-${m.promptId ?? matchIndex}`}
style={{
width: width - 60,
marginRight: 12,
}}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All this was the old UI which we are revamping

style={[
styles.blob,
{
width: 180,
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the future we might want to make these decoration dots random position but for this MVP version i think we can just do this for now

Comment on lines +72 to +77
// Architecture: instead of rotating the cards array (which causes cards to
// jump between DOM slots, producing flashes), we keep cards fixed in the array
// and track the current "top" index. Each card slot has its own z-index driven
// by its distance from the top. The top card flies out, and only AFTER it has
// fully left the screen do we advance the index — with everything already in
// the correct visual position so no flash is possible.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI this entire part i admittedly had not much invovlement with as i had mr claude do it (the swiping, stack mechanis, shadowing, animation/morphing into the sheet, etc.)

So i just made sure to prompt Claude into making something that looked like the mocks and that felt nice to use. And i made sure to test it plenty

Comment on lines +190 to +194
const doSubmit = useCallback(() => {
// 1. Close the sheet immediately (no spring — just hide it).
expandProgress.setValue(0);
setIsExpanded(false);
setCardRect(null);
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is for the "Done" submission screen -

Image

Comment on lines +366 to +373
const overlayTop = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [cr.y, SHEET_TOP] });
const overlayLeft = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [cr.x, SHEET_MARGIN] });
const overlayRight = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [width - cr.x - cr.w, SHEET_MARGIN] });
const overlayHeight = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [cr.h, SHEET_HEIGHT] });
const backdropOpacity = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [0, 0.5] });
const cardContentOpacity = expandProgress.interpolate({ inputRange: [0, 0.3, 0.5], outputRange: [1, 1, 0], extrapolate: 'clamp' });
const sheetContentOpacity = expandProgress.interpolate({ inputRange: [0.45, 0.75, 1], outputRange: [0, 0, 1], extrapolate: 'clamp' });
const overlayBorderBottomRadius = expandProgress.interpolate({ inputRange: [0, 1], outputRange: [24, 48] });
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol this downward curving slope caused by the syntax highlighting is visually quite nice :)


return (
<View style={styles.skipOuter}>
<Animated.View style={[styles.skipFill, styles.skipFillLeft, { transform: [{ translateX: leftTranslateX }, { translateY: fillTranslateY }] }]} pointerEvents="none" />
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think one little bug that i've been trying to deal with is that there's a noticeable flash each time you swipe a card to dismiss it for later. it's minor enough to not be catastrophic but i'm still trying to figure out how to fix it 😭

@@ -0,0 +1,230 @@
/**
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all this is TBD test placeholder data, but here's how i imagine it would look like to edit the stack manually. But ofc ideally all the cards are automatically populated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant